package com.xingfudazi.app.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xingfudazi.app.domain.AppTrade;
import com.xingfudazi.app.dto.SysAdjustEnergyDTO;
import com.xingfudazi.app.dto.TransferDTO;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 交易表 服务类
 * </p>
 *
 * @author Yu JiaMing
 * @since 2023-11-13
 */
public interface IAppTradeService extends IService<AppTrade> {

    /**
     * 查询交易表分页数据
     *
     * @param page      页码
     * @param pageCount 每页条数
     * @return IPage<AppTrade>
     */
    IPage<AppTrade> findListByPage(Integer page, Integer pageCount);

    /**
     * 添加交易表
     *
     * @param appTrade 交易表
     * @return int
     */
    int add(AppTrade appTrade);

    /**
     * 删除交易表
     *
     * @param id 主键
     * @return int
     */
    int delete(Long id);

    /**
     * 修改交易表
     *
     * @param appTrade 交易表
     * @return int
     */
    int updateData(AppTrade appTrade);

    /**
     * id查询数据
     *
     * @param id id
     * @return AppTrade
     */
    AppTrade findById(Long id);


    /**
     *  风控 扣款 预校验
     * @param nid 用户ID
     * @param costEnergy 需要产能
     * @return 是否校验成功
     */
    boolean preEnergyValidate(Long nid, Integer costEnergy);

    

    /**
     *  根据订单查询交易记录信息
     * @param orderNo 订单号
     * @return  List<AppTrade>
     */
    List<AppTrade> findByOrderNo(String orderNo);

    /**
     *  调整
     * @param sysAdjustEnergyDTO 调整dto
     */
    void sysAdjustEnergy(SysAdjustEnergyDTO sysAdjustEnergyDTO);


    /**
     *  交易查询
     * @param appTrade 交易对象
     * @param currentTime 当前时间
     * @return   List<AppTrade>
     */
    List<AppTrade> list(AppTrade appTrade, Date currentTime);


    /**
     *  转账
     * @param transferDTO 转账对象
     */
    void transferEnergy(TransferDTO transferDTO);
}
